<?php
/**
 * Clase que gestiona las generos
 */
class Genero{
	
	private $MySQL;
	private $id;		
	private $nombre;
	private $listaCanciones;
	
	public function __construct($id_genero=null){
		$Validar = new Validar();
		$this->MySQL = new MySQL('MYLIED');
		
		if($id_genero){
			$this->id = $id_genero;
			$this->cargar();
		}
	}

	private function cargar(){
		try{
			if($this->id){
				$query_genero = "SELECT *
									FROM generos_canciones
									WHERE id = '$this->id'; "; 
				if(!($result = $this->MySQL->query($query_genero)))
					throw new Exception("Error al cargar el g&eacute;nero");
				else if(mysql_num_rows($result) == 0)
					throw new Exception("La informaci&oacute;n del g&eacute;nero no est&aacute; disponible.");
					
				$row = mysql_fetch_array($result);	
				$this->nombre = $row['nombre'];		

				$this->cargar_Canciones();
			}
		}catch(Exception $e){}
	}	
	
	private function cargar_Canciones(){
		$listaCanciones = new ListaCanciones();
		$filtros['generos'][] = $this->id;
		$listaCanciones->buscar($filtros);
		
		while($cancion=$listaCanciones->siguiente()){
			$this->lista_canciones[] = $cancion;
		}
	}
	
	public function get_Id(){
		return $this->id;
	}
	
	public function get_Nombre(){
		return $this->nombre;
	}
	
	public function get_Lista_Canciones(){
		return $this->lista_canciones;
	}
	
	public function set_Nombre($nombre){
		if($nombre != ''){
			$query = "UPDATE generos_canciones SET nombre='$nombre' WHERE id='$this->id';";
			if(!$this->MySQL->query($query))
				throw new Exception("Error al editar el nombre del genero");
			$this->nombre = $nombre;
		}
	}
	
	/**
	 * Borra la genero de la BBDD
	 */
	public function del_Genero(){
		$query = "DELETE FROM generos_canciones WHERE id='$this->id'";
		$this->MySQL->query($query);
	}
	
	public function crear($datos){
		
		//Comprobando los datos "imprescindibles":
		$errores = '';
		if($datos['nombre'] == '' || ! isset($datos['nombre']))
			$errores .= "El nombre es obligatorio.";
		
		if($errores != '') {
			throw new Exception($errores);
		}
		
		$this->nombre = stripslashes(trim(mysql_real_escape_string($datos['nombre'])));
		
		$this->guardar();
		
		return $this->id;
	}
	
	/**
	 * Guarda en la BBDD los datos del genero
	 */
	private function guardar(){
		$query = "INSERT INTO generos_canciones (nombre) 
							VALUES (
									'$this->nombre'
									);";
		if(!$this->MySQL->query($query))
			throw new Exception("Error al crear el genero");
									
		$this->id = mysql_insert_id();
	}
}
?>